/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 */

package async;

import org.apache.jmeter.control.gui.AbstractControllerGui;
import org.apache.jmeter.gui.GUIMenuSortOrder;
import org.apache.jmeter.testelement.TestElement;
import org.apache.jmeter.util.JMeterUtils;
import org.apache.jorphan.gui.layout.VerticalLayout;

import javax.swing.*;

/**
 * A Transaction controller component.
 */
@GUIMenuSortOrder(2)
public class MyTransactionControllerGui extends AbstractControllerGui {

	private static final long serialVersionUID = 240L;

	/**
	 * If selected, then generate parent sample, otherwise as per original controller
	 */
	private JCheckBox generateParentSample;

	/**
	 * if selected, add duration of timers to total runtime
	 */
	private JCheckBox includeTimers;

	/**
	 * Create a new TransactionControllerGui instance.
	 */
	public MyTransactionControllerGui() {
		init();
	}

	@Override
	public TestElement createTestElement() {
		MyTransactionController lc = new MyTransactionController();
		lc.setIncludeTimers(false); // change default for new test elements
		configureTestElement(lc);
		return lc;
	}

	@Override
	public void configure(TestElement el) {
		super.configure(el);
		generateParentSample.setSelected(((MyTransactionController) el).isGenerateParentSample());
		includeTimers.setSelected(((MyTransactionController) el).isIncludeTimers());
	}

	@Override
	public void modifyTestElement(TestElement el) {
		configureTestElement(el);
		((MyTransactionController) el).setGenerateParentSample(generateParentSample.isSelected());
		MyTransactionController tc = (MyTransactionController) el;
		tc.setGenerateParentSample(generateParentSample.isSelected());
		tc.setIncludeTimers(includeTimers.isSelected());
	}

	@Override
	public String getLabelResource() {
		return "异步事务控制器"; // $NON-NLS-1$
	}

	@Override
	public String getStaticLabel() {
		// TODO Auto-generated method stub
		return "异步事务控制器";
	}

	@Override
	public String getComment() {
		// TODO Auto-generated method stub
		return "需配合我的异步Java请求使用，内部如果添加了思考时间，统计事务响应时间时会将思考时间一起加进去。。。";
	}

	/**
	 * Initialize the GUI components and layout for this component.
	 */
	private void init() { // WARNING: called from ctor so must not be overridden (i.e. must be private or final)
		setLayout(new VerticalLayout(5, VerticalLayout.BOTH, VerticalLayout.TOP));
		setBorder(makeBorder());
		add(makeTitlePanel());
		generateParentSample = new JCheckBox(JMeterUtils.getResString("transaction_controller_parent")); // $NON-NLS-1$
		// add(CheckBoxPanel.wrap(generateParentSample));
		includeTimers = new JCheckBox(JMeterUtils.getResString("transaction_controller_include_timers"), true); // $NON-NLS-1$
		// add(CheckBoxPanel.wrap(includeTimers));
	}
}
